'use strict'

const {Controller} = require("egg")

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {

    String.prototype.format = function () {
        let formatted = this;
        for (let arg in arguments) {
            formatted = formatted.replace("{" + arg + "}", arguments[arg]);
        }
        return formatted;
    };


    const dateFormat = function (fmt = "yyyy-MM-dd hh:mm:ss") {
        let o = {
            "M+": this.getMonth() + 1,
            "d+": this.getDate(),
            "h+": this.getHours(),
            "m+": this.getMinutes(),
            "s+": this.getSeconds(),
            "q+": Math.floor((this.getMonth() + 3) / 3),
            "S": this.getMilliseconds()
        };
        if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
            if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
    };
    String.prototype.formatDate = dateFormat;


    setTimeout(function () {
        console.info('process.env====', app.config.ENV, app.config.domain)
    });

    const prefix = '/course/admin';


    const {router, controller} = app;

    //#######################################sys user####################################################
    //获取用户信息
    router.get(`${prefix}/info`, controller.sysuser.getSysUserDetail);
    //登录
    router.post(`${prefix}/login`, controller.sysuser.login);
    //登出
    router.post(`${prefix}/logout`, controller.sysuser.logout);
    //获取菜单信息
    router.get(`${prefix}/menus`, controller.sysuser.getMenus);
    //修改密码
    router.put(`${prefix}/updatePwd`, controller.sysuser.updatePwd);


    //#######################################菜单####################################################
    //查询菜单列表
    router.get(`${prefix}/menu/list`, controller.sysmenu.getMenuList);
    //新增菜单
    router.post(`${prefix}/menu`, controller.sysmenu.addMenu);
    //查询菜单详情
    router.get(`${prefix}/menu/:menuId`, controller.sysmenu.getMenuDetail);
    //修改菜单
    router.put(`${prefix}/menu`, controller.sysmenu.updateMenu);
    //删除菜单
    router.delete(`${prefix}/menu/:menuId`, controller.sysmenu.deleteMenu);


    //#######################################角色####################################################
    //查询角色列表
    router.get(`${prefix}/role/list`, controller.sysrole.getRoleList);
    //新增角色
    router.post(`${prefix}/role`, controller.sysrole.addRole);
    //修改角色
    router.put(`${prefix}/role`, controller.sysrole.updateRole);
    //修改角色权限
    router.put(`${prefix}/role/perms`, controller.sysrole.updateRolePerms);
    //查询角色详情
    router.get(`${prefix}/role/:roleId`, controller.sysrole.getRoleDetail);
    //查询所有可用角色
    router.get(`${prefix}/role/list/all`, controller.sysrole.getRoleListAll);
    //删除角色
    router.delete(`${prefix}/role/:roleId`, controller.sysrole.deleteRole);


    //#######################################sys user####################################################
    //查询管理员列表
    router.get(`${prefix}/sysuser/list`, controller.sysuser.getUserList);
    //查询管理员详情
    router.get(`${prefix}/sysuser/:userId`, controller.sysuser.getUserDetail);
    //新增管理员
    router.post(`${prefix}/sysuser`, controller.sysuser.addUser);
    //修改管理员
    router.put(`${prefix}/sysuser`, controller.sysuser.updateUser);
    //修改管理员信息
    router.put(`${prefix}/sysuser/profile`, controller.sysuser.updateUserProfile);
    //删除管理员
    router.delete(`${prefix}/sysuser/:userId`, controller.sysuser.deleteUser);
    //重置密码
    router.put(`${prefix}/sysuser/resetPwd`, controller.sysuser.resetPwd);


    //#######################################订单管理##################################################
    //订单列表
    router.get(`${prefix}/order/list`, controller.order.getOrderList);
    //订单详情


    //#######################################用户管理##################################################
    router.get(`${prefix}/user/balance`, controller.user.getUserBalance);
    router.get(`${prefix}/user/balance/detail`, controller.user.getUserBalanceDetail);
    router.get(`${prefix}/user/list`, controller.user.getUserList);
    router.get(`${prefix}/user/:id`, controller.user.getUserDetail);
    router.post(`${prefix}/user/audit/switch`, controller.user.userAuditSwitch);
    router.post(`${prefix}/user/update/status`, controller.user.updateUserStatus);


    //#######################################系统消息##################################################
    router.get(`${prefix}/system/message/list`, controller.notify.getSystemMessageList);
    router.get(`${prefix}/system/message/detail`, controller.notify.getSystemMessageDetail);
    router.delete(`${prefix}/system/message/:id`, controller.notify.deleteSystemMessage);
    router.post(`${prefix}/system/message`, controller.notify.addSystemMessage);
    router.put(`${prefix}/system/message`, controller.notify.updateSystemMessage);


    //租户管理
    router.post(`${prefix}/tenant`, controller.tenant.addTenant);
    router.put(`${prefix}/tenant`, controller.tenant.editTenant);
    router.get(`${prefix}/tenant/list`, controller.tenant.getTenantList);
    router.get(`${prefix}/tenant/:tenantId`, controller.tenant.getTenantDetail);

    //商品管理
    router.post(`${prefix}/product`, controller.product.addProduct);
    router.put(`${prefix}/product`, controller.product.editProduct);
    router.get(`${prefix}/product/list`, controller.product.getProductList);
    router.get(`${prefix}/product/:productId`, controller.product.getProductDetail);
    router.delete(`${prefix}/product/:productId`, controller.product.deleteProduct);
    router.put(`${prefix}/product/updateStatus`, controller.product.updateProductStatus);

    //报名管理
    router.get(`${prefix}/productApply/list`, controller.product.getProductApplyList);
    router.put(`${prefix}/productApply/importantLevel`, controller.product.updateProductApplyImportantLevel);

    //投诉管理
    router.get(`${prefix}/complaint/list`, controller.complaint.getComplaintList);
    router.post(`${prefix}/complaint/process`, controller.complaint.processComplaint);

    //系统参数
    router.get(`${prefix}/sys/param`, controller.sysparam.getSysParam);
    router.post(`${prefix}/sys/param`, controller.sysparam.saveSysParam);


    //#######################################通用#################################################
    //生成图形验证码 /common/captchaImage
    router.get(`${prefix}/common/captchaImage`, controller.common.captchaImage);
    //oss公共上传文件
    router.post(`${prefix}/publish/upload/file`, controller.common.uploadFile);


};
